fix(opencode): bound model-pool queue time - #502
Conversation
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
2 - Model-pool outcome:
exhausted - Head SHA:
e4c3b3781410fa0ddcf4c69191bf23659eb7a4a6 - Workflow run: 29217057643
- Workflow attempt: 1
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
2 - Model-pool outcome:
exhausted - Head SHA:
e4c3b3781410fa0ddcf4c69191bf23659eb7a4a6 - Workflow run: 29217057643
- Workflow attempt: 2
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head11f1fc264e6421f318c6c0ab9825d437b0e99758. -
Head SHA:
11f1fc264e6421f318c6c0ab9825d437b0e99758 -
Workflow run: 29218081022
-
Workflow attempt: 1
Coverage evidence
Coverage Evidence
- Head SHA:
11f1fc264e6421f318c6c0ab9825d437b0e99758 - Required test evidence: supported repository test suites must pass.
- Required docstring evidence: repository-owned docstring gates must pass when configured; otherwise docstring coverage is advisory.
Implementation completeness scan
$ python3 /home/runner/work/.github/.github/scripts/ci/implementation_completeness_scan.py --repo-root . --changed-files /tmp/tmp.XVbgQXJ6N5
# Implementation Completeness Scan
- Checked runtime source files: 1
- Declaration handling: typing.Protocol, abc.ABC, @abstractmethod, and @overload placeholders are treated as contracts, not executable missing implementations.
- Result: PASS
- Reason: no executable placeholder implementations were found in changed runtime source files.
- Result: PASS
Python project dependencies (.)
$ uv sync --project . --group dev
Using CPython 3.12.3 interpreter at: /usr/bin/python3
Creating virtual environment at: .venv
Resolved 17 packages in 144ms
Downloading pygments (1.2MiB)
Downloaded pygments
Prepared 13 packages in 117ms
Installed 13 packages in 14ms
+ attrs==26.1.0
+ click==8.4.2
+ colorama==0.4.6
+ coverage==7.15.1
+ iniconfig==2.3.0
+ interrogate==1.7.0
+ packaging==26.2
+ pluggy==1.6.0
+ py==1.11.0
+ pygments==2.20.0
+ pytest==9.1.1
+ pytest-cov==7.1.0
+ tabulate==0.10.0
- Result: PASS
Python coverage with missing-line report (.)
$ bash -c cd\ \"\$1\"\ \&\&\ PYTHONPATH=.\ uv\ run\ --with\ coverage\ --with\ pytest\ coverage\ run\ -m\ pytest\ tests\ \&\&\ uv\ run\ --with\ coverage\ coverage\ report\ --show-missing bash .
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0
rootdir: /home/runner/work/.github/.github/pr-head
configfile: pyproject.toml
plugins: cov-7.1.0
collected 371 items
tests/test_assert_opencode_reasoning_effort.py ........ [ 2%]
tests/test_changed_file_syntax_gate.py ............... [ 6%]
tests/test_cloudflare_dns_contract.py ... [ 7%]
tests/test_codeql_pr_workflow_contract.py . [ 7%]
tests/test_filter_gitleaks_sarif.py ........ [ 9%]
tests/test_fuzz_targets.py . [ 9%]
tests/test_implementation_completeness_scan.py ......... [ 12%]
tests/test_install_python_requirements_for_coverage.py ....... [ 14%]
tests/test_noema_review_gate.py ................ [ 18%]
tests/test_opencode_agent_contract.py .......................... [ 25%]
tests/test_opencode_docker_evidence_contract.py . [ 25%]
tests/test_opencode_model_pool_runner.py ..... [ 26%]
tests/test_opencode_review_context.py ...... [ 28%]
tests/test_opencode_review_normalize_output.py ......................... [ 35%]
[ 35%]
tests/test_opencode_workflow_shell_syntax.py . [ 35%]
tests/test_pr_auto_rebase.py ........................................... [ 47%]
.... [ 48%]
tests/test_pr_governance_audit_contract.py ... [ 49%]
tests/test_pr_head_replay_guard.py ........ [ 51%]
tests/test_pr_review_fix_scheduler.py ........................ [ 57%]
tests/test_pr_review_fix_scheduler_coverage.py .. [ 58%]
tests/test_pr_review_merge_scheduler.py ................................ [ 66%]
................................................... [ 80%]
tests/test_render_opencode_prompt_template.py .... [ 81%]
tests/test_required_workflow_queue_contract.py ......................... [ 88%]
....... [ 90%]
tests/test_review_execution_contracts.py .. [ 90%]
tests/test_sandboxed_verify.py ......... [ 93%]
tests/test_sandboxed_web_e2e.py .............. [ 97%]
tests/test_sbom_inventory_aggregator.py ........... [100%]
============================= 371 passed in 11.07s =============================
Name Stmts Miss Cover Missing
--------------------------------------------------------------------------------------
scripts/ci/assert_opencode_reasoning_effort.py 61 0 100%
scripts/ci/changed_file_syntax_gate.py 76 0 100%
scripts/ci/filter_gitleaks_sarif.py 58 0 100%
scripts/ci/implementation_completeness_scan.py 223 0 100%
scripts/ci/install_python_requirements_for_coverage.py 42 0 100%
scripts/ci/noema_review_gate.py 330 0 100%
scripts/ci/opencode_review_context.py 53 0 100%
scripts/ci/opencode_review_normalize_output.py 430 0 100%
scripts/ci/pr_auto_rebase.py 315 0 100%
scripts/ci/pr_head_replay_guard.py 99 0 100%
scripts/ci/pr_review_autofix_context.py 124 0 100%
scripts/ci/pr_review_fix_scheduler.py 216 0 100%
scripts/ci/pr_review_merge_scheduler.py 1391 3 99% 1086, 1088, 1090
scripts/ci/render_opencode_prompt_template.py 21 0 100%
scripts/ci/review_execution_contracts.py 201 0 100%
scripts/ci/sandboxed_verify.py 108 0 100%
scripts/ci/sandboxed_web_e2e.py 153 0 100%
scripts/ci/sbom_inventory_aggregator.py 176 0 100%
--------------------------------------------------------------------------------------
TOTAL 4077 3 99%
Coverage failure: total of 99 is less than fail-under=100
- Result: FAIL (exit 2)
Python docstring coverage advisory
$ bash -c python3\ -m\ interrogate\ .\ \|\|\ true
RESULT: PASSED (minimum: 100.0%, actual: 100.0%)
- Result: PASS
Coverage Decision
- Result: FAIL
- Test evidence: not proven passing
- Docstring evidence: not proven passing when configured
- Failure count: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script (2 files)"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path. Findings1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch
gh pr checkout 502 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/opencode-model-pool-timeout
# rebase path only: git push --force-with-lease origin HEAD:fix/opencode-model-pool-timeout
Merge Conflict Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
Merge Conflict Guidance
gh pr checkout 502 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/opencode-model-pool-timeout
# rebase path only: git push --force-with-lease origin HEAD:fix/opencode-model-pool-timeout |
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
5 - Model-pool outcome:
exhausted - Head SHA:
600dee444a5d74430aefbfbc8162f86a19947a5d - Workflow run: 29218612464
- Workflow attempt: 1
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.
Findings
1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch
- Problem: GitHub reports mergeStateStatus
DIRTYfor this pull request. - Root cause: Branch
fix/opencode-model-pool-timeoutcannot be merged cleanly intomain; the changed-file flow below shows which review/runtime path is blocked by the conflict. - Fix: Merge or rebase the latest
mainintofix/opencode-model-pool-timeout, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch. - Repair commands:
gh pr checkout 502 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/opencode-model-pool-timeout
# rebase path only: git push --force-with-lease origin HEAD:fix/opencode-model-pool-timeout- Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.
Merge Conflict Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
- Result: REQUEST_CHANGES
- Reason: mergeStateStatus is
DIRTY; mergeable isCONFLICTING. - Head SHA:
308afd0568e09fc738572219f934f27bb0f9e270 - Workflow run: 29219214391
- Workflow attempt: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
5 - Model-pool outcome:
exhausted - Head SHA:
bae20f37c004ebb621cfe1a41125648224bf5f61 - Workflow run: 29219762685
- Workflow attempt: 1
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
5 - Model-pool outcome:
exhausted - Head SHA:
bae20f37c004ebb621cfe1a41125648224bf5f61 - Workflow run: 29219762685
- Workflow attempt: 2
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
5 - Model-pool outcome:
exhausted - Head SHA:
bae20f37c004ebb621cfe1a41125648224bf5f61 - Workflow run: 29219762685
- Workflow attempt: 3
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current headcd4fa5635df84cbeaf89656ce41c78b7d28c7729. -
Head SHA:
cd4fa5635df84cbeaf89656ce41c78b7d28c7729 -
Workflow run: 29220636714
-
Workflow attempt: 1
Coverage evidence
Coverage Evidence
- Head SHA:
cd4fa5635df84cbeaf89656ce41c78b7d28c7729 - Required test evidence: supported repository test suites must pass.
- Required docstring evidence: repository-owned docstring gates must pass when configured; otherwise docstring coverage is advisory.
Implementation completeness scan
$ python3 /home/runner/work/.github/.github/scripts/ci/implementation_completeness_scan.py --repo-root . --changed-files /tmp/tmp.q5bq7dO2Cs
# Implementation Completeness Scan
- Checked runtime source files: 1
- Declaration handling: typing.Protocol, abc.ABC, @abstractmethod, and @overload placeholders are treated as contracts, not executable missing implementations.
- Result: PASS
- Reason: no executable placeholder implementations were found in changed runtime source files.
- Result: PASS
Python project dependencies (.)
$ uv sync --project . --group dev
Using CPython 3.12.3 interpreter at: /usr/bin/python3
Creating virtual environment at: .venv
Resolved 17 packages in 139ms
Downloading pygments (1.2MiB)
Downloaded pygments
Prepared 13 packages in 104ms
Installed 13 packages in 11ms
+ attrs==26.1.0
+ click==8.4.2
+ colorama==0.4.6
+ coverage==7.15.1
+ iniconfig==2.3.0
+ interrogate==1.7.0
+ packaging==26.2
+ pluggy==1.6.0
+ py==1.11.0
+ pygments==2.20.0
+ pytest==9.1.1
+ pytest-cov==7.1.0
+ tabulate==0.10.0
- Result: PASS
Python coverage with missing-line report (.)
$ bash -c cd\ \"\$1\"\ \&\&\ PYTHONPATH=.\ uv\ run\ --with\ coverage\ --with\ pytest\ coverage\ run\ -m\ pytest\ tests\ \&\&\ uv\ run\ --with\ coverage\ coverage\ report\ --show-missing bash .
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0
rootdir: /home/runner/work/.github/.github/pr-head
configfile: pyproject.toml
plugins: cov-7.1.0
collected 381 items
tests/test_assert_opencode_reasoning_effort.py ........ [ 2%]
tests/test_changed_file_syntax_gate.py ............... [ 6%]
tests/test_cloudflare_dns_contract.py ... [ 6%]
tests/test_codeql_pr_workflow_contract.py . [ 7%]
tests/test_filter_gitleaks_sarif.py ........ [ 9%]
tests/test_fuzz_targets.py . [ 9%]
tests/test_implementation_completeness_scan.py ......... [ 11%]
tests/test_install_python_requirements_for_coverage.py ....... [ 13%]
tests/test_noema_review_gate.py ................. [ 18%]
tests/test_opencode_agent_contract.py .......................... [ 24%]
tests/test_opencode_docker_evidence_contract.py . [ 25%]
tests/test_opencode_model_pool_runner.py ..... [ 26%]
tests/test_opencode_review_context.py ...... [ 28%]
tests/test_opencode_review_normalize_output.py ......................... [ 34%]
[ 34%]
tests/test_opencode_workflow_shell_syntax.py . [ 34%]
tests/test_pr_auto_rebase.py ........................................... [ 46%]
.... [ 47%]
tests/test_pr_governance_audit_contract.py ... [ 48%]
tests/test_pr_head_replay_guard.py ........ [ 50%]
tests/test_pr_review_fix_scheduler.py ........................ [ 56%]
tests/test_pr_review_fix_scheduler_coverage.py .. [ 56%]
tests/test_pr_review_merge_scheduler.py ................................ [ 65%]
........................................................... [ 80%]
tests/test_render_opencode_prompt_template.py .... [ 81%]
tests/test_required_workflow_queue_contract.py ......................... [ 88%]
........ [ 90%]
tests/test_review_execution_contracts.py .. [ 91%]
tests/test_sandboxed_verify.py ......... [ 93%]
tests/test_sandboxed_web_e2e.py .............. [ 97%]
tests/test_sbom_inventory_aggregator.py ........... [100%]
============================= 381 passed in 8.98s ==============================
Name Stmts Miss Cover Missing
--------------------------------------------------------------------------------------
scripts/ci/assert_opencode_reasoning_effort.py 61 0 100%
scripts/ci/changed_file_syntax_gate.py 76 0 100%
scripts/ci/filter_gitleaks_sarif.py 58 0 100%
scripts/ci/implementation_completeness_scan.py 223 0 100%
scripts/ci/install_python_requirements_for_coverage.py 42 0 100%
scripts/ci/noema_review_gate.py 339 0 100%
scripts/ci/opencode_review_context.py 53 0 100%
scripts/ci/opencode_review_normalize_output.py 430 0 100%
scripts/ci/pr_auto_rebase.py 315 0 100%
scripts/ci/pr_head_replay_guard.py 99 0 100%
scripts/ci/pr_review_autofix_context.py 124 0 100%
scripts/ci/pr_review_fix_scheduler.py 216 0 100%
scripts/ci/pr_review_merge_scheduler.py 1419 1 99% 976
scripts/ci/render_opencode_prompt_template.py 21 0 100%
scripts/ci/review_execution_contracts.py 201 0 100%
scripts/ci/sandboxed_verify.py 108 0 100%
scripts/ci/sandboxed_web_e2e.py 153 0 100%
scripts/ci/sbom_inventory_aggregator.py 176 0 100%
--------------------------------------------------------------------------------------
TOTAL 4114 1 99%
Coverage failure: total of 99 is less than fail-under=100
- Result: FAIL (exit 2)
Python docstring coverage advisory
$ bash -c python3\ -m\ interrogate\ .\ \|\|\ true
RESULT: PASSED (minimum: 100.0%, actual: 100.0%)
- Result: PASS
Coverage Decision
- Result: FAIL
- Test evidence: not proven passing
- Docstring evidence: not proven passing when configured
- Failure count: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script (2 files)"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
Superseded by current head 4800ff5; coverage failure was fixed by covering the missing review-head guard and current-head checks are rerunning.
There was a problem hiding this comment.
Pull request overview
OpenCode model providers were unavailable for this same-head run, but deterministic current-head evidence is clean: coverage evidence passed, peer GitHub Checks are complete, medium-or-higher code-scanning alerts are clear, mergeability is clean, and reviewer threads are resolved or outdated.
Findings
No blocking findings.
Evidence
- Result: APPROVE
- Reason: current-head model-unavailable evidence fallback; coverage, docstring, peer GitHub Checks, code-scanning alerts, mergeability, and review threads were clear for current head.
- Scope:
central OpenCode/Strix review-process - Changed files:
5 - Model-pool outcome:
exhausted - Head SHA:
4800ff50426dfd55964aac3876336efce7baf285 - Workflow run: 29220845340
- Workflow attempt: 1
This fallback does not suppress failed checks, medium-or-higher code-scanning alerts, merge conflicts, unresolved reviewer threads, or failed coverage evidence; any of those conditions still publish REQUEST_CHANGES or leave the approval state unchanged.
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.
Findings
1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch
- Problem: GitHub reports mergeStateStatus
DIRTYfor this pull request. - Root cause: Branch
fix/opencode-model-pool-timeoutcannot be merged cleanly intomain; the changed-file flow below shows which review/runtime path is blocked by the conflict. - Fix: Merge or rebase the latest
mainintofix/opencode-model-pool-timeout, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch. - Repair commands:
gh pr checkout 502 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/opencode-model-pool-timeout
# rebase path only: git push --force-with-lease origin HEAD:fix/opencode-model-pool-timeout- Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.
Merge Conflict Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
- Result: REQUEST_CHANGES
- Reason: mergeStateStatus is
DIRTY; mergeable isCONFLICTING. - Head SHA:
4800ff50426dfd55964aac3876336efce7baf285 - Workflow run: 29220845340
- Workflow attempt: 2
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
Superseded by current head 149f4ea; latest main was merged and conflicts were resolved with the OpenCode timeout bounds plus the stricter adversarial-review gate preserved.
…ol-timeout # Conflicts: # .github/workflows/opencode-review.yml # tests/test_opencode_agent_contract.py
# Conflicts: # .github/workflows/opencode-review.yml # tests/test_opencode_agent_contract.py
|
Bootstrap note for current HEAD
|
Summary
Root cause
clearfolio#114 showed the required OpenCode review job stuck in the model-pool step long after the candidate provider budget should have produced current-head fallback evidence. The workflow had per-provider and total budgets, but no outer process timeout around the shell runner, so a stalled child process could still hold the queue.
Verification
py -m pytest tests/test_opencode_agent_contract.py tests/test_opencode_model_pool_runner.py -q-> 29 passed, 2 skippedgit diff --checkgit diff --cached --checkcodegraph status-> up to date